Thread Object
The Thread
performance object consists of counters that measure aspects of thread
behavior. A thread is the basic object that executes instructions on a
processor. All running processes have at least one thread.
Processor
Time
Processor
Time is the percentage of elapsed time that this thread used the processor to
execute instructions. An instruction is the basic unit of execution in a
processor, and a thread is the object that executes instructions. Code executed
to handle some hardware interrupts and trap conditions are included in this count.
Detail Level:
Novice
Counter Type: PERF_100NSEC_TIMER
% User
Time
User Time is
the percentage of elapsed time that this thread has spent executing code in
user mode. Applications, environment subsystems, and integral subsystems
execute in user mode. Code executing in user mode cannot damage the integrity
of the Windows NT Executive, Kernel, and device drivers. Unlike some early
operating systems, Windows NT uses process boundaries for subsystem protection
in addition to the traditional protection of user and privileged modes. These
subsystem processes provide additional protection. Therefore, some work done by
Windows NT on behalf of your application might appear in other subsystem
processes in addition to the privileged time in your process.
Detail Level:
Advanced
Counter Type: PERF_100NSEC_TIMER
%
Privileged Time
Privileged
Time is the percentage of elapsed time that this thread has spent executing
code in privileged mode. When a Windows NT system service is called, the
service will often run in privileged mode in order to gain access to
system-private data. Such data is protected from access by threads executing in
user mode. Calls to the system can be explicit or implicit, such as page faults
or interrupts. Unlike some early operating systems, Windows NT uses process
boundaries for subsystem protection in addition to the traditional protection
of user and privileged modes. These subsystem processes provide additional
protection. Therefore, some work done by Windows NT on behalf of your application
might appear in other subsystem processes in addition to the privileged time in
your process.
Detail Level:
Advanced
Counter Type: PERF_100NSEC_TIMER
Context
Switches/sec
Context
Switches/sec is the rate of switches from one thread to another. Thread
switches can occur either inside of a single process or across processes. A
thread switch can be caused either by one thread asking another for
information, or by a thread being preempted by another, higher priority thread
becoming ready to run. Unlike some early operating systems, Windows NT uses
process boundaries for subsystem protection in addition to the traditional
protection of user and privileged modes. These subsystem processes provide
additional protection. Therefore, some work done by Windows NT on behalf of an
application might appear in other subsystem processes in addition to the
privileged time in the application. Switching to the subsystem process causes
one context switch in the application thread. Switching back causes another
context switch in the subsystem thread.
Detail Level:
Advanced
Counter Type: PERF_COUNTER_COUNTER
Elapsed
Time
The total
elapsed time (in seconds) this thread has been running.
Detail Level:
Advanced
Counter Type: PERF_ELAPSED_TIME
Priority
Current
The current
dynamic priority of this thread. The system can raise the thread's dynamic priority
above the base priority if the thread is handling user input, or lower it
towards the base priority if the thread becomes compute bound.
Detail Level:
Advanced
Counter Type: PERF_COUNTER_RAWCOUNT
Priority
Base
The current
base priority of this thread. The system can raise the thread's dynamic
priority above the base priority if the thread is handling user input, or lower
it towards the base priority if the thread becomes compute bound.
Detail Level:
Advanced
Counter Type: PERF_COUNTER_RAWCOUNT
Start Address
Starting
virtual address for this thread.
Detail Level:
Wizard
Counter Type: PERF_COUNTER_RAWCOUNT
Thread
State
Thread State
is the current state of the thread. It is 0 for Initialized, 1 for Ready, 2 for
Running, 3 for Standby, 4 for Terminated, 5 for Wait, 6 for Transition, 7 for
Unknown. A Running thread is using a processor; a Standby thread is about to
use one. A Ready thread wants to use a processor, but is waiting for a processor
because none are free. A thread in Transition is waiting for a resource in
order to execute, such as waiting for its execution stack to be paged in from
disk. A Waiting thread has no use for the processor because it is waiting for a
peripheral operation to complete or a resource to become free.
Detail Level:
Wizard
Counter Type: PERF_COUNTER_RAWCOUNT
Thread
Wait Reason
Thread Wait
Reason is only applicable when the thread is in the Wait state (see Thread
State.) It is 0 or 7 when the thread is waiting for the Executive, 1 or 8 for a
Free Page, 2 or 9 for a Page In, 3 or 10 for a Pool Allocation, 4 or 11 for an
Execution Delay, 5 or 12 for a Suspended condition, 6 or 13 for a User Request,
14 for an Event Pair High, 15 for an Event Pair Low, 16 for an LPC Receive, 17
for an LPC Reply, 18 for Virtual Memory, 19 for a Page Out; 20 and higher are
not assigned at the time of this writing. Event Pairs are used to communicate
with protected subsystems (see Context Switches.)
Detail Level:
Wizard
Counter Type: PERF_COUNTER_RAWCOUNT
ID Process
ID Process is
the unique identifier of this process. ID Process numbers are reused, so they
only identify a process for the lifetime of that process.
Detail Level:
Wizard
Counter Type: PERF_COUNTER_RAWCOUNT
ID Thread
ID Thread is
the unique identifier of this thread. ID Thread numbers are reused, so they
only identify a thread for the lifetime of that thread.
Detail Level:
Wizard
Counter Type: PERF_COUNTER_RAWCOUNT